package com.LeetCode.MapAndList;

import org.junit.Test;

import java.util.ArrayList;
import java.util.LinkedHashMap;

public class LRU {


    /**
     * lru design
     * @param operators int整型二维数组 the ops
     * @param k int整型 the k
     * @return int整型一维数组
     */
    public int[] LRU (int[][] operators, int k) {
        LinkedHashMap<Integer, Integer> cache = new LinkedHashMap<>();
        ArrayList<Integer> ans = new ArrayList();
        for(int[] arr : operators){
            if(arr[0] == 1){
                if(cache.containsKey(arr[1])){
                    cache.remove(arr[1]);
                }else{
                    if(cache.size() == k) cache.remove(cache.keySet().toArray()[0]);
                }
                cache.put(arr[1], arr[2]);
            }else if(arr[0] == 2){
                if(cache.containsKey(arr[1])){
                    int val = cache.remove(arr[1]);
                    cache.put(arr[1], arr[2]);
                    ans.add(val);
                }else{
                    ans.add(-1);
                }
            }
        }

        int[] res = new int[ans.size()];
        for(int i = 0; i<ans.size(); i++){
            res[i] = ans.get(i);
        }
        return res;
    }

    @Test
    public void test(){

    }

}
